[レポート] ANT376 : AWS Glue Data Catalog のアクセスコントロール #reinvent
はじめに
ANT376-Access Control in AWS Glue Data Catalog のセッションのレポートとなります。AWS Lake Formation のセキュリティを正しく理解するには必須のセッションです。
セッション概要
In this chalk talk, we describe how resource-level authorization and resource-based authorization work in the AWS Glue Data Catalog, and how these features are integrated with other AWS data analytics services such as Amazon Athena. In addition, we cover a few cross-account access patterns, and how cross-account access in AWS Glue Data Catalog can be used to support some of these use cases.
このchalk talkでは、AWS Glue Data Catalogでのリソースレベルの認可とリソースベースの認可の仕組み、およびこれらの機能がAmazon Athenaなどの他のAWSデータ分析サービスとどのように統合されているかについて説明します。 さらに、いくつかのクロスアカウントアクセスパターンと、AWS Glue Data Catalogのクロスアカウントアクセスを使用して、これらのユースケースの一部をサポートする方法についても説明します。
スピーカー
概要
- データカタログのリソース(言い換えれば、メタデータ)におけるFine-grained access controlであり、データではない
- IDベースのポリシーとリソースベースのポリシーの両方を使用できる
- AWS Glueリソースポリシー(リソースベース)を使用してクロスアカウントアクセスを有効にすることができる
- まだタグベースの認可はサポートされていない
リソース・レベルでの Fine-grained access control
- Database(データベース)
- Table(テーブル)
- Connection(接続)
- Function(関数)
AWS Glue Data Catalog の resource ARN
- arn:aws:glue:<region>:<account-id>:<resource-type>/<resource-path>
- 許可されたリソースタイプ文字列
- catalog
- database
- table
- connection
- userDefinedFunction
- 例
- arn:aws:glue:us-east-1:12345:catalog
- arn:aws:glue:us-east-1:12345:database/aws
- arn:aws:glue:us-east-1:12345:table/aws/demo
- arn:aws:glue:us-east-1:12345:userDefinedFunction/aws/udf1
- arn:aws:glue:us-east-1:12345:connection/conn1
ポリシー適用の仕組み
- Identity-based policies(IAMポリシー)
- IAMによって管理する
- IAMプリンシパル(IAMユーザー、IAMロールなど)にアタッチする
- Resource-based policies
- AWS Glueによって管理される
- カタログに設定
- Amazon S3のバケットポリシーと同様、アカウント/カタログごとに1つのポリシー
- クロスアカウントアクセスを許可するために必要
- いずれかを使用して、同じアカウント内のユーザーにアクセス権を付与できる
クロスアカウントアクセス
- シナリオ − アカウントB(12345)のユーザー「Bob」は、アカウントA(67890)のデータカタログにアクセスして、 awsテータベースの demoテーブルを参照したい
- アカウントBのBobのIAMユーザーARN:arn:aws:iam::12345:user/bob
- アカウントAのカタログが us-east-1 にあるとします
- アカウントAのカタログARN:arn:aws:glue:us-east-1:67890:catalog
- アカウントAのデータベースARN:arn:aws:glue:us-east-1:67890:database/aws
- アカウントAのテーブルARN:arn:aws:glue:us-east-1:67890:table/aws/demo
- Bobは、テーブルにアクセスするためにIAMポリシーとリソースポリシーの両方を必要とする
- IAMポリシー(BobのIAMユーザー "user / bob"にアタッチ)
- リソースポリシー
- AWS Glueコンソールのポリシーエディタ
- PutResourcePolicy API
デモ
AWS Glue ETL によるクロスアカウントアクセス
AWS Glue のETLスクリプトでは、クロスアカウントのデータソースの指定にcatalog_idを指定してアクセスします。
Amazon EMR によるクロスアカウントアクセス
Amazon EMR のクロスアカウントはhive.metastore.glue.catalogid
パラメタにcatalog_idを指定してクラスタを作成します。
上記以外に /etc/hive/conf.dist/hive-site.xml にhive.metastore.glue.catalogid
パラメタを指定する方法もあります。
AWS Glue Data Catalog のリソースポリシーエディタ
AWS Glueのコンソールの[Settings]([設定])から[Permission]([アクセス権限])でポリシーを追加して、データカタログのきめ細かなアクセスコントロールを定義します。
階層的アクセス許可モデル
- すべての親リソースを明示的に許可することなく、子リソースに直接アクセスすることはできません
- テーブルリソースのGetTableアクションが成功するには、親データベースとカタログに対するアクセス許可が必要
- 子リソースへのアクセスは、いずれかの親リソースに対して明示的に拒否されてブロックされる
「権限」の整理
- 「action」の権限
アクション部分は、Action句内で定義されます。下記の例では、catalogリソースに対してはGet
から始まるのアクション、databaseリソースに対してはGetDatabase
とGetTable
のアクション、tableリソースに対してはGetTable
とGetPartition
のアクションのリソース・ステートメントが含まれています。glue:Get*
のようなワイルドカード指定も可能です。
- 「resource」の権限
アクセス部分は、Resource句内で定義されます。この部分は、アクションを実行できるAWS Glue Data Catalogオブジェクトと、その操作によって返される結果オブジェクトを定義します。
下記の例ではawsデータベースとdb1テータベースにのみアクセスできるようにするポリシーを定義するとします。このポリシーでは、ユーザーはawsデータベースのdemoテーブルとdb1テーブルのelb_logsテーブルを返すことができます。
Gotchas
- DeleteDatabase アクションも指定できる
- Amazon Athenaのデータベース "default"
- GetDatabasesとGetTablesでのフィルタリング
- ワイルドカード指定
- パーティションやテーブルのバージョンに対して、きめ細かなアクセス制御はない
最後に
AWS Glue Data Catalog のIDベースのとアクションとリソースの権限管理は、AWS Lake Formation を用いることでより管理しやすいインタフェースを提供します。
合わせて読みたい
ANT396 : [NEW LAUNCH!] AWS Lake Formation の紹介 – セキュアなデータレイクを構築する #reinvent